implementation *1900

Please click on ads to support us..

C++ Code:

#include<cstdio>
#include<algorithm>
using namespace std;
int N;
char S[1<<20];
int C[1<<20],M[1<<20];
main()
{
	scanf("%d%s",&N,S);
	if(N%2)
	{
		puts("0");
		return 0;
	}
	int cnt=0;
	for(int i=0;i<N;i++)
	{
		if(S[i]=='(')cnt++;
		else cnt--;
		C[i+1]=cnt;
	}
	M[N]=C[N];
	for(int i=N;i--;)
	{
		M[i]=min(C[i],M[i+1]);
	}
	int ans=0;
	for(int i=0;i<N;i++)
	{
		if(C[i]<0)break;
		if(S[i]=='(')
		{
			if(M[i+1]==2&&cnt==2)ans++;
		}
		else
		{
			if(M[i+1]==-2&&cnt==-2)ans++;
		}
	}
	printf("%d\n",ans);
}


Comments

Submit
0 Comments
More Questions

478A - Initial Bet
981A - Antipalindrome
365A - Good Number
1204B - Mislove Has Lost an Array
1409D - Decrease the Sum of Digits
1476E - Pattern Matching
1107A - Digits Sequence Dividing
1348A - Phoenix and Balance
1343B - Balanced Array
1186A - Vus the Cossack and a Contest
1494A - ABC String
1606A - AB Balance
1658C - Shinju and the Lost Permutation
1547C - Pair Programming
550A - Two Substrings
797B - Odd sum
1093A - Dice Rolling
1360B - Honest Coach
1399C - Boats Competition
1609C - Complex Market Analysis
1657E - Star MST
1143B - Nirvana
1285A - Mezo Playing Zoma
919B - Perfect Number
894A - QAQ
1551A - Polycarp and Coins
313A - Ilya and Bank Account
1469A - Regular Bracket Sequence
919C - Seat Arrangements
1634A - Reverse and Concatenate